package com.example.langchain4j.config;

import dev.langchain4j.data.message.ChatMessage;
import dev.langchain4j.store.memory.chat.ChatMemoryStore;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Component
public class PersistentChatMemoryStoreConfig implements ChatMemoryStore {

    private  Map<Object, List<ChatMessage>> memoryStore = new HashMap<>();
    @Override
    public List<ChatMessage> getMessages(Object memoryId) {
        // TODO: 实现通过内存ID从持久化存储中获取所有消息。
        // 可以使用ChatMessageDeserializer.messageFromJson(String)和
        // ChatMessageDeserializer.messagesFromJson(String)辅助方法
        // 轻松地从JSON反序列化聊天消息。
//        System.out.println("获取聊天消息"+memoryStore.get(memoryId));
        return memoryStore.get(memoryId)==null  ? new ArrayList<>() : memoryStore.get(memoryId);
    }

    @Override
    public void updateMessages(Object memoryId, List<ChatMessage> messages) {
        // TODO: 实现通过内存ID更新持久化存储中的所有消息。
        // 可以使用ChatMessageSerializer.messageToJson(ChatMessage)和
        // ChatMessageSerializer.messagesToJson(List<ChatMessage>)辅助方法
        // 轻松地将聊天消息序列化为JSON。
//        System.out.println("更新聊天消息"+messages);
        memoryStore.put(memoryId, messages);
    }

    @Override
    public void deleteMessages(Object memoryId) {
        // TODO: 实现通过内存ID删除持久化存储中的所有消息。
//        System.out.println("删除聊天消息"+memoryId);
        memoryStore.remove(memoryId);
    }
}

